﻿using BCCommon;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.VehicleTransportFaq;
using System;
using System.Collections.Generic;

namespace BCService.TMS.VehicleTransportFaq
{
    public interface IVehicleTransportFaqService
    {
        /// <summary>
        /// 添加新车辆运输常见问题纪录
        /// </summary>
        /// <param name="vehicleTransportFaqRequestDto"></param>
        /// <param name="admin"></param>
        /// <returns></returns>
        VehicleTransportFaqDto Add(VehicleTransportFaqRequestDto vehicleTransportFaqRequestDto, AdminDto admin);

        /// <summary>
        /// 删除车辆运输常见问题记录
        /// </summary>
        /// <param name="vehicleTransportFaqId"></param>
        /// <returns></returns>
        void Delete(long vehicleTransportFaqId);

        /// <summary>
        /// 获取车辆运输常见问题记录
        /// </summary>
        /// <param name="vehicleTransportFaqId"></param>
        /// <returns></returns>
        VehicleTransportFaqDto GetById(long vehicleTransportFaqId);

        /// <summary>
        /// 获取车辆运输常见问题记录--[分页]
        /// </summary>
        /// <param name="faqCategoryId"></param>
        /// <param name="title"></param>
        /// <param name="question"></param>
        /// <param name="answer"></param>
        /// <param name="keyWord"></param>
        /// <param name="isShow"></param>
        /// <param name="isDelete"></param>
        /// <param name="isReply"></param>
        /// <param name="isSolve"></param>
        /// <param name="enable"></param>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="replyEmail"></param>
        /// <param name="sortName"></param>
        /// <param name="ascending"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        PageableList<VehicleTransportFaqDto> GetList(int? faqCategoryId, string title, string question, string answer, string keyWord, bool? isShow, bool? isDelete, bool? isReply, bool? isSolve, bool? enable, DateTime? start, DateTime? end, string replyEmail, string sortName, bool? ascending, int pageIndex, int pageSize);

        /// <summary>
        /// 获取车辆运输常见问题记录
        /// </summary>
        /// <param name="faqCategoryId"></param>
        /// <param name="title"></param>
        /// <param name="question"></param>
        /// <param name="answer"></param>
        /// <param name="keyWord"></param>
        /// <param name="isShow"></param>
        /// <param name="isDelete"></param>
        /// <param name="isReply"></param>
        /// <param name="isSolve"></param>
        /// <param name="enable"></param>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <param name="replyEmail"></param>
        /// <param name="sortName"></param>
        /// <param name="ascending"></param>
        /// <returns></returns>
        List<VehicleTransportFaqDto> GetList(int? faqCategoryId, string title, string question, string answer, string keyWord, bool? isShow, bool? isDelete, bool? isReply, bool? isSolve, bool? enable, DateTime? start, DateTime? end, string replyEmail, string sortName, bool? ascending);

        /// <summary>
        /// 修改车辆运输常见问题记录
        /// </summary>
        /// <param name="vehicleTransportFaqDto"></param>
        /// <param name="admin"></param>
        /// <returns></returns>
        VehicleTransportFaqDto Update(VehicleTransportFaqDto vehicleTransportFaqDto, AdminDto admin);

        /// <summary>
        ///  更新 回复信息
        /// </summary>
        /// <param name="vehicleTransportFaqId"></param>
        /// <param name="answer"></param>
        /// <param name="keyWord"></param>
        /// <param name="isSolve"></param>
        /// <param name="admin"></param> 
        /// <returns></returns>
        VehicleTransportFaqDto UpdateAnswer(long vehicleTransportFaqId, string answer, string keyWord, bool? isSolve, AdminDto admin);

        /// <summary>
        /// 修改 记录状态
        /// </summary>
        /// <param name="vehicleTransportFaqId"></param>
        /// <param name="isShow"></param>
        /// <param name="isRelay"></param>
        /// <param name="isSolve"></param>
        /// <param name="enabled"></param>
        /// <param name="isDelete"></param>
        /// <returns></returns>
        VehicleTransportFaqDto UpdateStatus(long vehicleTransportFaqId, bool? isShow, bool? isRelay, bool? isSolve, bool? enabled, bool? isDelete);

        /// <summary>
        /// 修改 记录状态
        /// </summary>
        /// <param name="vehicleTransportFaqStatusPutDto">车辆运输问题状态修改模型</param>
        /// <returns></returns>
        VehicleTransportFaqDto UpdateStatus(VehicleTransportFaqStatusPutDto vehicleTransportFaqStatusPutDto);
    }
}